const redisManager = require('./redisManager');
const CONFIG = require('../../../common/config');
const moment = require('moment');
const async = require('async');




const luaUtil = (function () {

    function luaUtil() {
    }


    /**
     * 初始化活动配置信息
     *
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array} values 活动相关的信息
     *                 [
     *                 id,             活动id
     *                 randomReward,   随机红包奖励余额
     *                 likeReward,     点赞红包奖励余额
     *                 praisedReward， 被点赞红包奖励余额
     *                 randomMin，     随机红包最小值
     *                 randomMax，       随机红包最大值
     *                 likeMin，       点赞红包最小值
     *                 likeMax，         点赞红包最大值
     *                 praisedMin，      被点赞红包最小值
     *                 praisedMax，      被点赞红包最大值
     *                 activityInfo     活动信息的json字符串
     *                 ]
     *
     * @param {Function} callback 回调函数
     *                    error: 失败原因
     */
    luaUtil.initActivityInfo = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('initActivityInfo_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });

    };


    /**
     * 获取活动随机，点赞和被点赞红包余额
     *
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array}  values 活动相关的信息
     *                  [actId] 活动id
     *
     * @param {Function} callback 回调函数
     *                    data: [1,2,3]   1为随机红包，2为点赞红包，3为被点赞红包
     *                    error: 失败原因
     */
    luaUtil.getActAllRemaining = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('getActAllRemaining_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });
    };


    /**
     * 获取活动随机，点赞和被点赞人数信息
     *
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array}  values 活动相关的信息
     *                   [actId]   活动id
     *
     *
     * @param {Function} callback 回调函数
     *                    data: [1,2,3]   1为随机人数，2为点赞人数，3为被点赞人数
     *                    error: 失败原因
     */
    luaUtil.getActAllUserCount = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('getActAllUserCount_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });
    };



    /**
     * 获取活动随机，点赞和被点赞最大范围和最小范围
     *
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array} values 活动相关的信息
     *          [actId  ,flag]  1获取随机红包，2获取点赞红包，3获取被点赞红包，4、获取所有数组
     *
     * @param {Function} callback 回调函数
     *                    data: [min,max]   【最小值，最大值】  各个配置的 flag为4返回所有配置的最小值最大值
     *                    error: 失败原因
     */
    luaUtil.getActRuleMinMax = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('getActRuleMinMax_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });
    };


    /**
     * 获取活动信息JSON
     *
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array} values 活动相关的信息
     *                  [ actId] 活动id
     * @param {Function} callback 回调函数
     *                    data: json字符串
     *                    error: 失败原因
     */
    luaUtil.getActInfoJson = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('getActInfoJson_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });
    };



    /**
     * 更新该活动下的特定奖池余额以及人数
     *
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array} values 活动相关的信息
     *                  [
     *                  actId， 活动id
     *                  flag   标记，1更新随机红包奖池2更新点赞红包奖池，3更新被点赞红包奖池
     *                  ]
     * @param {Function} callback 回调函数
     *                    data: json字符串
     *                    error: 失败原因
     */
    luaUtil.tryGetRedPackage = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('updateRewardInfo_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });
    };



    /**
     * 获取红包金额
     * @author 毛凯
     * @date 2018-7-30
     *
     * @param {array} values 活动相关的信息
     *                  [
     *                  actId， 活动id
     *                  flag,   标记，1更新随机红包奖池2更新点赞红包奖池，3更新被点赞红包奖池
     *                  expireTime 过期时间
     *                  ]
     * @param {Function} callback 回调函数
     *                    data: json字符串
     *                    error: 失败原因
     */
    luaUtil.calculateRedPackage = function(values,callback){
        redisManager.getRedisDBMgr(function (getMgrErr, scriptMgr) {
            if(getMgrErr) {
                return callback(getMgrErr);
            }
            const keys = [];
            scriptMgr.run('getRedPackage_202', keys, values, function (error,result) {
                return callback(error,result);
            });
        });
    };

    return luaUtil;
})();

module.exports = luaUtil;